
let map_token (tok : LustreParser.Aut.Gram.token) =
  let open LustreParser.Aut.Gram in
  match tok with
  | ASSERT l     -> (LustreParser2.ASSERT     l, l)
  | AUTOMATON l  -> (LustreParser2.AUTOMATON  l, l)
  | AND l        -> (LustreParser2.AND        l, l)
  (* | BOOL l       -> let v = (Obj.magic l :
   *                              Common.ident * LustreAst.astloc) in
   *                   (LustreParser2.BOOL       v, snd v) *)
  | BAR l        -> (LustreParser2.BAR        l, l)
  | CASE l       -> (LustreParser2.CASE       l, l)
  | COLONCOLON l -> (LustreParser2.COLONCOLON l, l)
  | COLON l      -> (LustreParser2.COLON      l, l)
  | COMMA l      -> (LustreParser2.COMMA      l, l)
  | CONSTANT l   -> let v = (Obj.magic l :
                              LustreAst.constant * LustreAst.astloc) in
                    (LustreParser2.CONSTANT   v, snd v)
  | CONTINUE l   -> (LustreParser2.CONTINUE   l, l)
  | DO l         -> (LustreParser2.DO         l, l)
  | DONE l       -> (LustreParser2.DONE       l, l)
  | DOT l        -> (LustreParser2.DOT        l, l)
  | ELSE l       -> (LustreParser2.ELSE       l, l)
  | END l        -> (LustreParser2.END        l, l)
  | ENUM_NAME l  -> (LustreParser2.ENUM_NAME  l, snd l)
  | EVERY l      -> (LustreParser2.EVERY      l, l)
  | EXTERNAL l   -> (LustreParser2.EXTERNAL   l, l)
  | EOF l        -> (LustreParser2.EOF        l, l)
  | EQ l         -> (LustreParser2.EQ         l, l)
  | HASH l       -> (LustreParser2.HASH       l, l)
  (* | FALSE l      -> (LustreParser2.FALSE      l, l) *)
  | FBY l        -> (LustreParser2.FBY        l, l)
  | FLOAT32 l    -> (LustreParser2.FLOAT32    l, l)
  | FLOAT64 l    -> (LustreParser2.FLOAT64    l, l)
  | FUNCTION l   -> (LustreParser2.FUNCTION   l, l)
  | GEQ l        -> (LustreParser2.GEQ        l, l)
  | GT l         -> (LustreParser2.GT         l, l)
  | IFTE l       -> (LustreParser2.IFTE       l, l)
  | IN l         -> (LustreParser2.IN         l, l)
  | INITIALLY l  -> (LustreParser2.INITIALLY  l, l)
  | INT16 l      -> (LustreParser2.INT16      l, l)
  | INT32 l      -> (LustreParser2.INT32      l, l)
  | INT64 l      -> (LustreParser2.INT64      l, l)
  | INT8 l       -> (LustreParser2.INT8       l, l)
  | LAND l       -> (LustreParser2.LAND       l, l)
  | LAST l       -> (LustreParser2.LAST       l, l)
  | LEQ l        -> (LustreParser2.LEQ        l, l)
  | LET l        -> (LustreParser2.LET        l, l)
  | LNOT l       -> (LustreParser2.LNOT       l, l)
  | LOR l        -> (LustreParser2.LOR        l, l)
  | LPAREN l     -> (LustreParser2.LPAREN     l, l)
  | LSL l        -> (LustreParser2.LSL        l, l)
  | LSR l        -> (LustreParser2.LSR        l, l)
  | LT l         -> (LustreParser2.LT         l, l)
  | LXOR l       -> (LustreParser2.LXOR       l, l)
  | MERGE l      -> (LustreParser2.MERGE      l, l)
  | MINUS l      -> (LustreParser2.MINUS      l, l)
  | MOD l        -> (LustreParser2.MOD        l, l)
  | NEQ l        -> (LustreParser2.NEQ        l, l)
  | NODE l       -> (LustreParser2.NODE       l, l)
  | NOT l        -> (LustreParser2.NOT        l, l)
  | OF l         -> (LustreParser2.OF         l, l)
  | ON l         -> (LustreParser2.ON         l, l)
  | ONOT l       -> (LustreParser2.ONOT       l, l)
  | OR l         -> (LustreParser2.OR         l, l)
  | OTHERWISE l  -> (LustreParser2.OTHERWISE  l, l)
  | PLUS l       -> (LustreParser2.PLUS       l, l)
  | RARROW l     -> (LustreParser2.RARROW     l, l)
  | RESET l      -> (LustreParser2.RESET      l, l)
  | RESTART l    -> (LustreParser2.RESTART    l, l)
  | RETURNS l    -> (LustreParser2.RETURNS    l, l)
  | RPAREN l     -> (LustreParser2.RPAREN     l, l)
  | RRARROW l    -> (LustreParser2.RRARROW    l, l)
  | SEMICOLON l  -> (LustreParser2.SEMICOLON  l, l)
  | SLASH l      -> (LustreParser2.SLASH      l, l)
  | STAR l       -> (LustreParser2.STAR       l, l)
  | STATE l      -> (LustreParser2.STATE      l, l)
  | SWITCH l     -> (LustreParser2.SWITCH     l, l)
  | TEL l        -> (LustreParser2.TEL        l, l)
  | THEN l       -> (LustreParser2.THEN       l, l)
  | TYPE l       -> (LustreParser2.TYPE       l, l)
  (* | TRUE l       -> (LustreParser2.TRUE       l, l) *)
  | UINT16 l     -> (LustreParser2.UINT16     l, l)
  | UINT32 l     -> (LustreParser2.UINT32     l, l)
  | UINT64 l     -> (LustreParser2.UINT64     l, l)
  | UINT8 l      -> (LustreParser2.UINT8      l, l)
  | UNDERSCORE l -> (LustreParser2.UNDERSCORE l, l)
  | UNLESS l     -> (LustreParser2.UNLESS     l, l)
  | UNTIL l      -> (LustreParser2.UNTIL      l, l)
  | VAR l        -> (LustreParser2.VAR        l, l)
  | VAR_NAME l   -> (LustreParser2.VAR_NAME   l, snd l)
  | WHEN l       -> (LustreParser2.WHEN       l, l)
  | WHENOT l     -> (LustreParser2.WHENOT     l, l)
  | XOR l        -> (LustreParser2.XOR        l, l)
